home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 2 / Apprentice-Release2.iso / Source Code / C / Applications / Macintosh Tracker 1.20 / source / Tracker Client Folder / Core 18⁄March⁄1994 / CTextEdit.c < prev    next >
Encoding:
Text File  |  1993-06-06  |  12.7 KB  |  169 lines  |  [TEXT/KAHL]

  1. }
  2.                     UndoText = DupSysHandle((**TextBox).hText);
  3.                     SetTag(UndoText,"TEUndo");
  4.                     UndoCursorStart = (**TextBox).selStart;
  5.                     UndoCursorEnd = (**TextBox).selEnd;
  6.                     TECopy(TextBox);
  7.                     Scrap->SetScrap(DupSysHandle(TEScrapHandle()),'TEXT');
  8.                     return True;
  9.                 case mEditPaste:
  10.                     if (Scrap->GetScrapType() == 'TEXT')
  11.                         {
  12.                             UndoOperation = UndoPaste;
  13.                             if (UndoText != NIL)
  14.                                 {
  15.                                     ReleaseHandle(UndoText);
  16.                                 }
  17.                             UndoText = DupSysHandle((**TextBox).hText);
  18.                             SetTag(UndoText,"TEUndo");
  19.                             UndoCursorStart = (**TextBox).selStart;
  20.                             UndoCursorEnd = (**TextBox).selEnd;
  21.                             Scrap->ExportScrap();
  22.                             Error = TEFromScrap();
  23.                             /* ERROR(Error != noErr,
  24.                                 PRERR(AllowResume,"CTextEdit::DoMenuCommand TEFromScrap error.")); */
  25.                             TEPaste(TextBox);
  26.                         }
  27.                     return True;
  28.                 case mEditClear:
  29.                     UndoOperation = UndoDelete;
  30.                     if (UndoText != NIL)
  31.                         {
  32.                             ReleaseHandle(UndoText);
  33.                         }
  34.                     UndoText = DupSysHandle((**TextBox).hText);
  35.                     SetTag(UndoText,"TEUndo");
  36.                     UndoCursorStart = (**TextBox).selStart;
  37.                     UndoCursorEnd = (**TextBox).selEnd;
  38.                     TEDelete(TextBox);
  39.                     return True;
  40.                 case mEditSelectAll:
  41.                     TESetSelect(0,(**TextBox).teLength,TextBox);
  42.                     return True;
  43.                 case mEditUndo:
  44.                     if (UndoOperation != UndoNone)
  45.                         {
  46.                             Handle        Temp;
  47.                             short            SelStartTemp;
  48.                             short            SelEndTemp;
  49.  
  50.                             SetUpPort();
  51.                             Window->LEraseRect(ZeroPoint,Extent);
  52.                             Temp = DupSysHandle((**TextBox).hText);
  53.                             SetTag(Temp,"TEUndo");
  54.                             SelStartTemp = (**TextBox).selStart;
  55.                             SelEndTemp = (**TextBox).selEnd;
  56.                             HLock(UndoText);
  57.                             TESetText(*UndoText,HandleSize(UndoText),TextBox);
  58.                             HUnlock(UndoText);
  59.                             ReleaseHandle(UndoText);
  60.                             (**TextBox).selStart = UndoCursorStart;
  61.                             (**TextBox).selEnd = UndoCursorEnd;
  62.                             UndoCursorStart = SelStartTemp;
  63.                             UndoCursorEnd = SelEndTemp;
  64.                             UndoText = Temp;
  65.                             SetUpPort();
  66.                             DoUpdate();
  67.                             if ((UndoOperation == UndoCut) || (UndoOperation == RedoCut) ||
  68.                                 (UndoOperation == UndoCopy) || (UndoOperation == RedoCopy))
  69.                                 {
  70.                                     Scrap->UndoScrapOp();
  71.                                 }
  72.                             UndoOperation = UndoOperation ^ RedoXorBit;
  73.                         }
  74.                     break;
  75.                 default:
  76.                     return False;
  77.             }
  78.     }
  79.  
  80.  
  81. void            CTextEdit::DoIdle(long TimeSinceLastEvent)
  82.     {
  83.         ERROR(Initialized != True,PRERR(ForceAbort,
  84.             "CTextEdit::DoIdle called on uninitialized object."));
  85.         if (KeyReceiverViewRect == this)
  86.             {
  87.                 SetUpPort();
  88.                 TEIdle(TextBox);
  89.             }
  90.     }
  91.  
  92.  
  93. /* enable the menu items this object can handle */
  94. void            CTextEdit::EnableMenuItems(void)
  95.     {
  96.         ERROR(Initialized != True,PRERR(ForceAbort,
  97.             "CTextEdit::EnableMenuItems called on uninitialized object."));
  98.         if (KeyReceiverViewRect == this)
  99.             {
  100.                 Handle        NewName;
  101.  
  102.                 MyEnableItem(mEditCut);
  103.                 MyEnableItem(mEditCopy);
  104.                 MyEnableItem(mEditPaste);
  105.                 MyEnableItem(mEditClear);
  106.                 MyEnableItem(mEditSelectAll);
  107.                 switch (UndoOperation)
  108.                     {
  109.                         case UndoDelete:
  110.                             NewName = GetCString(UndoDeleteName);
  111.                             break;
  112.                         case UndoTyping:
  113.                             NewName = GetCString(UndoTypingName);
  114.                             break;
  115.                         case UndoPaste:
  116.                             NewName = GetCString(UndoPasteName);
  117.                             break;
  118.                         case UndoCut:
  119.                             NewName = GetCString(UndoCutName);
  120.                             break;
  121.                         case UndoCopy:
  122.                             NewName = GetCString(UndoCopyName);
  123.                             break;
  124.                         case RedoDelete:
  125.                             NewName = GetCString(RedoDeleteName);
  126.                             break;
  127.                         case RedoTyping:
  128.                             NewName = GetCString(RedoTypingName);
  129.                             break;
  130.                         case RedoPaste:
  131.                             NewName = GetCString(RedoPasteName);
  132.                             break;
  133.                         case RedoCut:
  134.                             NewName = GetCString(RedoCutName);
  135.                             break;
  136.                         case RedoCopy:
  137.                             NewName = GetCString(RedoCopyName);
  138.                             break;
  139.                         default:
  140.                             NewName = GetCString(CantUndoName);
  141.                             break;
  142.                     }
  143.                 ChangeName(mEditUndo,NewName);
  144.                 if (UndoOperation != UndoNone)
  145.                     {
  146.                         MyEnableItem(mEditUndo);
  147.                     }
  148.             }
  149.     }
  150.  
  151.  
  152. Handle        CTextEdit::GetTextCopy(void)
  153.     {
  154.         return DupSysHandle((**TextBox).hText);
  155.     }
  156.  
  157.  
  158. void            CTextEdit::SetText(Handle TheNewText)
  159.     {
  160.         Handle        Temp;
  161.  
  162.         HLock(TheNewText);
  163.         TESetText(*TheNewText,HandleSize(TheNewText),TextBox);
  164.         SetUpPort();
  165.         DoUpdate();
  166.         ReleaseHandle(TheNewText);
  167.         DoMenuCommand(mEditSelectAll);
  168.     }
  169.